/*
配置解析
*/

package config

import (
	"bufio"
	"encoding/json"
	"os"
)

// TODO:配置结构体
type Config struct {
	AppName  string         `json:"app_name"`
	AppMode  string         `json:"app_mode"`
	AppHost  string         `json:"app_host"`
	AppPort  string         `json:"app_port"`
	Database DatabaseConfig `json:"database0"`
	Ding     DingConfig     `json:"ding"`
}

type DatabaseConfig struct {
	Driver   string `json:"driver"`
	User     string `json:"user"`
	Password string `json:"password"`
	Host     string `json:"host"`
	Port     uint   `json:"port"`
	Dbname   string `json:"dbname"`
	Charset  string `json:"charset"`
}

type DingConfig struct {
	CorpId    string `json:"corp_id"`
	APIToken  string `json:"api_token"`
	AgentId   string `json:"agent_id"`
	AppKey    string `json:"app_key"`
	AppSecret string `json:"app_secret"`
	Tokens    string `json:"tokens"`
	Aes_key   string `json:"aes_key"`
	Url       string `json:"url"`
}

// 读取过程
var _cfg *Config = nil

func GetConfig() *Config {
	return _cfg
}

func ParseConfig(path string) (*Config, error) {
	file, err := os.Open(path)
	if err != nil {
		panic(err)
	}
	defer file.Close()

	reader := bufio.NewReader(file)
	decoder := json.NewDecoder(reader)
	if err = decoder.Decode(&_cfg); err != nil {
		return nil, err
	}
	return _cfg, nil
}
